package cn.msi.questionnaire.service;

import java.util.Date;
import java.util.List;

import cn.common.manager.SessionManager;
import cn.common.util.GeneralUtils;
import cn.msi.customer.domain.User;
import cn.msi.project.domain.Project;
import cn.msi.project.mapper.ProjectMapper;
import cn.msi.questionnaire.domain.Naire;
import cn.msi.questionnaire.mapper.NaireMapper;
import cn.msi.questionnaire.mapper.TemplateMapper;
import cn.msi.questionnaire.util.TemplateXMLUtils;

public class NaireService {

	private NaireMapper naireMapper;

	private ProjectMapper projectMapper;

	private TemplateMapper templateMapper;

	/**
	 * 查询问卷
	 * 
	 * @param naire
	 * @return
	 */
	public String searchNaire(Naire naire) {
		return GeneralUtils.easyUI(naireMapper.count(naire), naireMapper.selectList(naire));
	}

	/**
	 * 查找问卷
	 * 
	 * @param naire
	 * @return
	 */
	public Naire openNairePage(Naire naire) {
		if (naire.getNaireId() != null) {
			naire = naireMapper.selectById(naire.getNaireId());
		} else {
			Project p = projectMapper.selectById(naire.getProjectId());
			naire.setChkCustId(p.getSignCustId());
		}
		return naire;
	}

	/**
	 * 保存问卷模板
	 * 
	 * @param naire
	 */
	public void editNaire(Naire naire, String indexText, String[] questionText) {
		naire.setNaireContent(TemplateXMLUtils.createTemplate(indexText, questionText));
		if (naire.getNaireId() != null) {
			naireMapper.update(naire);
		} else {
			User user = (User) SessionManager.getAttr("user");
			naire.setCreateTime(new Date());
			naire.setCustId(user.getCustId());
			naire.setUserId(user.getUserId());
			naire.setNaireState("Y");
			naireMapper.insert(naire);
		}
	}

	/**
	 * 查找问卷内容
	 * 
	 * @param naire
	 * @return
	 */
	public String findNaireContent(Naire naire) {
		String content = null;
		if (naire.getNaireId() != null) {
			content = naireMapper.selectContent(naire.getNaireId());
		} else {
			// 查找项目问卷模板
			content = templateMapper.selectContent(naire.getProjectId());
			// 根据组织机构ID查找该组织机构最后3次问卷
			List<String> contents = naireMapper.seleclByChkOrg(naire.getChkOrgId());
			// 生成问卷
			content = TemplateXMLUtils.mergeNaire(content, contents);
		}
		if (content != null) {
			content = TemplateXMLUtils.createNaire(content);
		}
		return content;
	}

	/**
	 * 问卷作废业务处理
	 * 
	 * @param naire
	 */
	public void invalidNaire(Naire naire) {
		naire.setNaireState("D");
		naireMapper.update(naire);
	}

	/**
	 * 一审
	 * 
	 * @param naire
	 */
	public void firstAutNaire(Naire naire) {
		naire.setNaireState("A");
		naireMapper.update(naire);
	}

	/**
	 * 二审
	 * 
	 * @param naire
	 */
	public void secondAutNaire(Naire naire) {
		naire.setNaireState("F");
		naireMapper.update(naire);
	}

	public void setNaireMapper(NaireMapper naireMapper) {
		this.naireMapper = naireMapper;
	}

	public void setProjectMapper(ProjectMapper projectMapper) {
		this.projectMapper = projectMapper;
	}

	public void setTemplateMapper(TemplateMapper templateMapper) {
		this.templateMapper = templateMapper;
	}
}
